from axiom_boot.core.exceptions import FrameworkException


class ScraperException(FrameworkException):
    """
    爬虫模块所有异常的基类。
    继承自 FrameworkException，以便被全局异常处理器捕获。
    """
    pass


class DownloadError(ScraperException):
    """当下载过程中发生错误时抛出。"""
    pass


class ParsingError(ScraperException):
    """当内容解析（例如，从JSON字符串转换为Python字典）失败时抛出。"""
    pass


class ExtractionError(ScraperException):
    """当从已解析的内容中提取数据项（Item）失败时抛出。"""
    pass


class DropItem(Exception):
    """
    一个特殊的信号异常，用于在 ItemPipeline 中指示应丢弃某个项目。
    它不代表一个错误，因此不继承自 ScraperException。
    """
    pass


class RequestAborted(ScraperException):
    """
    当一个请求被中间件明确中止时（例如，process_request返回None），抛出此异常。
    """
    pass 